

package com.scs.application.modules.base.entity;

import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.scs.application.core.model.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 商品规格实体对象
 */
@TableName("material_spec")
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@Accessors(chain = true)
@ExcelTarget("materialSpec")
public class MaterialSpec extends DataEntity implements Serializable {

    /** 商品ID */
    @NotNull(message="商品ID不能为空")
    private String materialId;

    /** 规格 */
    @NotBlank(message="规格不能为空")
    @Length(min=1, max=300, message="规格长度必须介于 1 和 300 之间")
    private String materialSpec;

    /** 编码格式 */
    @NotNull(message="编码格式不能为空")
    private String inputCodingType;

    /** ERP代码 */
    //@Length(max=30, message="ERP代码长度必须介于 0 和 30 之间")
    private String materialErpCode;

    /** 输入编码 */
    @Length(max=30, message="输入编码长度必须介于 0 和 30 之间")
    private String inputCode;

    /** 剂型 */
    @Length(max=30, message="剂型长度必须介于 0 和 30 之间")
    private String form;

    /** 订单单位 */
    @NotNull(message="订单单位不能为空")
    private String orderUnit;

    /** 订单单位数量 */
    @NotNull(message="订单单位数量不能为空")
    private Double orderQty;

    /** 单位 */
    @NotNull(message="单位不能为空")
    private String unit;

    /** 价格 */
    private Double price;

    /** 是否寄售 */
    @NotNull(message="是否寄售不能为空")
    private Integer isConsignment;

    /** 是否一物一码*/
    @NotNull(message="是否一物一码不能为空")
    private Integer isOneThingOneYard;

    /**供应商标识*/
    @TableField(exist = false)
    private String supplierId;

    /**品名*/
    @TableField(exist = false)
    private String materialName;

    /**商品名*/
    @TableField(exist = false)
    private String materialTradeName;

    /** 注册证号 */
    @Length(max=50, message="注册证号长度必须介于 0 和 50 之间")
    private String certificateNo;

    /** 注册证开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date certificateExpiredStartDate;

    /** 注册证结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date certificateExpiredDate;

    /** 生产厂商 */
    private String manufacturerId;

    /** 院方注册证号 */
    @TableField(exist = false)
    private String hospitalCertificateNo;

    /** 院方注册证开始日期 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date hospitalCertificateExpiredStartDate;

    /** 院方注册证结束日期 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date hospitalCertificateExpiredDate;

    /** 关联医院Id */
    @TableField(exist = false)
    private String hospitalId;

    /** 关联医院Name */
    @TableField(exist = false)
    private String hospitalName;

    /** SPD品类 **/
    @TableField(exist = false)
    private String hospitalCatalogId;

    /** 是否阳光采购 **/
    @TableField(exist = false)
    private Integer isSunPurchase;

    /** 阳光采购代码 **/
    @TableField(exist = false)
    private String sunPurchaseCode;

    /** 医用耗材编码 **/
    @TableField(exist = false)
    private String medicalConsumablesCode;

    /** 商品Code **/
    @TableField(exist = false)
    private String materialCode;

    @TableField(exist = false)
    private String manufacturerName;
}
